diff --git a/src/bundle/Controller/Content/VersionDraftConflictController.php b/src/bundle/Controller/Content/VersionDraftConflictController.php
index 6c50cedb..598367fe 100644
--- a/src/bundle/Controller/Content/VersionDraftConflictController.php
+++ b/src/bundle/Controller/Content/VersionDraftConflictController.php
@@ -10,7 +10,9 @@ namespace EzSystems\EzPlatformAdminUiBundle\Controller\Content;
 
 use eZ\Publish\API\Repository\ContentService;
 use eZ\Publish\API\Repository\LocationService;
+use eZ\Publish\API\Repository\UserService;
 use EzSystems\EzPlatformAdminUi\Specification\Content\ContentDraftHasConflict;
+use EzSystems\EzPlatformAdminUi\Specification\ContentIsUser;
 use EzSystems\EzPlatformAdminUi\UI\Dataset\DatasetFactory;
 use EzSystems\EzPlatformAdminUiBundle\Controller\Controller;
 use Symfony\Component\HttpFoundation\Response;
@@ -26,19 +28,25 @@ class VersionDraftConflictController extends Controller
     /** @var DatasetFactory */
     private $datasetFactory;
 
+    /** @var \eZ\Publish\API\Repository\UserService */
+    private $userService;
+
     /**
-     * @param LocationService $locationService
-     * @param ContentService $contentService
-     * @param DatasetFactory $datasetFactory
+     * @param \eZ\Publish\API\Repository\LocationService $locationService
+     * @param \eZ\Publish\API\Repository\ContentService $contentService
+     * @param \EzSystems\EzPlatformAdminUi\UI\Dataset\DatasetFactory $datasetFactory
+     * @param \eZ\Publish\API\Repository\UserService $userService
      */
     public function __construct(
         LocationService $locationService,
         ContentService $contentService,
-        DatasetFactory $datasetFactory
+        DatasetFactory $datasetFactory,
+        UserService $userService
     ) {
         $this->locationService = $locationService;
         $this->contentService = $contentService;
         $this->datasetFactory = $datasetFactory;
+        $this->userService = $userService;
     }
 
     /**
@@ -68,6 +76,7 @@ class VersionDraftConflictController extends Controller
             $modalContent = $this->renderView('@ezdesign/content/modal_draft_conflict.html.twig', [
                 'conflicted_drafts' => $conflictedDrafts,
                 'location' => $location,
+                'content_is_user' => (new ContentIsUser($this->userService))->isSatisfiedBy($content),
             ]);
 
             return new Response($modalContent, Response::HTTP_CONFLICT);
diff --git a/src/bundle/Controller/ContentController.php b/src/bundle/Controller/ContentController.php
index 27058be5..84c23808 100644
--- a/src/bundle/Controller/ContentController.php
+++ b/src/bundle/Controller/ContentController.php
@@ -10,6 +10,7 @@ use eZ\Publish\API\Repository\ContentService;
 use eZ\Publish\API\Repository\Exceptions as ApiException;
 use eZ\Publish\API\Repository\Exceptions\UnauthorizedException;
 use eZ\Publish\API\Repository\LocationService;
+use eZ\Publish\API\Repository\UserService;
 use eZ\Publish\API\Repository\Values\Content\Content;
 use eZ\Publish\API\Repository\Values\Content\Location;
 use eZ\Publish\Core\Base\Exceptions\BadStateException;
@@ -22,6 +23,8 @@ use EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory;
 use EzSystems\EzPlatformAdminUi\Form\SubmitHandler;
 use EzSystems\EzPlatformAdminUi\Notification\NotificationHandlerInterface;
 use EzSystems\EzPlatformAdminUi\Siteaccess\SiteaccessResolverInterface;
+use EzSystems\EzPlatformAdminUi\Specification\ContentIsUser;
+use EzSystems\EzPlatformAdminUi\Specification\ContentType\ContentTypeIsUser;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -57,15 +60,23 @@ class ContentController extends Controller
     /** @var LocationService */
     private $locationService;
 
+    /** @var \eZ\Publish\API\Repository\UserService */
+    private $userService;
+
+    /** @var array */
+    private $userContentTypeIdentifier;
+
     /**
-     * @param NotificationHandlerInterface $notificationHandler
-     * @param ContentService $contentService
-     * @param FormFactory $formFactory
-     * @param SubmitHandler $submitHandler
-     * @param TranslatorInterface $translator
-     * @param ContentMainLocationUpdateMapper $contentMetadataUpdateMapper
-     * @param SiteaccessResolverInterface $siteaccessResolver
-     * @param LocationService $locationService
+     * @param \EzSystems\EzPlatformAdminUi\Notification\NotificationHandlerInterface $notificationHandler
+     * @param \eZ\Publish\API\Repository\ContentService $contentService
+     * @param \EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory $formFactory
+     * @param \EzSystems\EzPlatformAdminUi\Form\SubmitHandler $submitHandler
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     * @param \EzSystems\EzPlatformAdminUi\Form\DataMapper\ContentMainLocationUpdateMapper $contentMetadataUpdateMapper
+     * @param \EzSystems\EzPlatformAdminUi\Siteaccess\SiteaccessResolverInterface $siteaccessResolver
+     * @param \eZ\Publish\API\Repository\LocationService $locationService
+     * @param \eZ\Publish\API\Repository\UserService $userService
+     * @param array $userContentTypeIdentifier
      */
     public function __construct(
         NotificationHandlerInterface $notificationHandler,
@@ -75,7 +86,9 @@ class ContentController extends Controller
         TranslatorInterface $translator,
         ContentMainLocationUpdateMapper $contentMetadataUpdateMapper,
         SiteaccessResolverInterface $siteaccessResolver,
-        LocationService $locationService
+        LocationService $locationService,
+        UserService $userService,
+        array $userContentTypeIdentifier
     ) {
         $this->notificationHandler = $notificationHandler;
         $this->contentService = $contentService;
@@ -85,6 +98,8 @@ class ContentController extends Controller
         $this->contentMainLocationUpdateMapper = $contentMetadataUpdateMapper;
         $this->siteaccessResolver = $siteaccessResolver;
         $this->locationService = $locationService;
+        $this->userService = $userService;
+        $this->userContentTypeIdentifier = $userContentTypeIdentifier;
     }
 
     /**
@@ -110,6 +125,14 @@ class ContentController extends Controller
                 $language = $data->getLanguage();
                 $parentLocation = $data->getParentLocation();
 
+                if ((new ContentTypeIsUser($this->userContentTypeIdentifier))->isSatisfiedBy($contentType)) {
+                    return $this->redirectToRoute('ez_user_create', [
+                        'contentTypeIdentifier' => $contentType->identifier,
+                        'language' => $language->languageCode,
+                        'parentLocationId' => $parentLocation->id,
+                    ]);
+                }
+
                 return $this->redirectToRoute('ez_content_create_no_draft', [
                     'contentTypeIdentifier' => $contentType->identifier,
                     'language' => $language->languageCode,
@@ -151,6 +174,15 @@ class ContentController extends Controller
                 $versionNo = $versionInfo->versionNo;
                 $location = $data->getLocation();
 
+                $content = $this->contentService->loadContent($contentInfo->id);
+                if ((new ContentIsUser($this->userService))->isSatisfiedBy($content)) {
+                    return $this->redirectToRoute('ez_user_update', [
+                        'contentId' => $contentInfo->id,
+                        'versionNo' => $versionNo,
+                        'language' => $language->languageCode,
+                    ]);
+                }
+
                 if (!$versionInfo->isDraft()) {
                     $contentDraft = $this->contentService->createContentDraft($contentInfo, $versionInfo);
                     $versionNo = $contentDraft->getVersionInfo()->versionNo;
diff --git a/src/bundle/Controller/ContentViewController.php b/src/bundle/Controller/ContentViewController.php
index 0edf0d15..63d51efa 100644
--- a/src/bundle/Controller/ContentViewController.php
+++ b/src/bundle/Controller/ContentViewController.php
@@ -21,6 +21,7 @@ use EzSystems\EzPlatformAdminUi\Form\Data\Location\LocationCopySubtreeData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Location\LocationMoveData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Location\LocationTrashData;
 use EzSystems\EzPlatformAdminUi\Form\Data\User\UserDeleteData;
+use EzSystems\EzPlatformAdminUi\Form\Data\User\UserEditData;
 use EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory;
 use EzSystems\EzPlatformAdminUi\Specification\ContentIsUser;
 use EzSystems\EzPlatformAdminUi\UI\Module\Subitems\ContentViewParameterSupplier as SubitemsContentViewParameterSupplier;
@@ -208,10 +209,6 @@ class ContentViewController extends Controller
             new LocationMoveData($location)
         );
 
-        $contentEditType = $this->formFactory->contentEdit(
-            new ContentEditData($content->contentInfo, $versionInfo, null, $location)
-        );
-
         $subitemsContentEdit = $this->formFactory->contentEdit(
             null,
             'form_subitems_content_edit'
@@ -228,7 +225,6 @@ class ContentViewController extends Controller
         $view->addParameters([
             'form_location_copy' => $locationCopyType->createView(),
             'form_location_move' => $locationMoveType->createView(),
-            'form_content_edit' => $contentEditType->createView(),
             'form_content_create' => $contentCreateType->createView(),
             'form_subitems_content_edit' => $subitemsContentEdit->createView(),
             'form_location_copy_subtree' => $locationCopySubtreeType->createView(),
@@ -238,17 +234,25 @@ class ContentViewController extends Controller
             $userDeleteType = $this->formFactory->deleteUser(
                 new UserDeleteData($content->contentInfo)
             );
+            $userEditType = $this->formFactory->editUser(
+                new UserEditData($content->contentInfo, $versionInfo, null, $location)
+            );
 
             $view->addParameters([
                 'form_user_delete' => $userDeleteType->createView(),
+                'form_user_edit' => $userEditType->createView(),
             ]);
         } else {
             $locationTrashType = $this->formFactory->trashLocation(
                 new LocationTrashData($location)
             );
+            $contentEditType = $this->formFactory->contentEdit(
+                new ContentEditData($content->contentInfo, $versionInfo, null, $location)
+            );
 
             $view->addParameters([
                 'form_location_trash' => $locationTrashType->createView(),
+                'form_content_edit' => $contentEditType->createView(),
             ]);
         }
     }
diff --git a/src/bundle/Resources/config/services/controllers.yml b/src/bundle/Resources/config/services/controllers.yml
index 8a4b43fc..9a0cc0bb 100644
--- a/src/bundle/Resources/config/services/controllers.yml
+++ b/src/bundle/Resources/config/services/controllers.yml
@@ -8,6 +8,7 @@ services:
         parent: EzSystems\EzPlatformAdminUiBundle\Controller\Controller
         arguments:
             $siteaccessResolver: '@EzSystems\EzPlatformAdminUi\Siteaccess\NonAdminSiteaccessResolver'
+            $userContentTypeIdentifier: '$user_content_type_identifier$'
 
     EzSystems\EzPlatformAdminUiBundle\Controller\ContentTypeController:
         parent: EzSystems\EzPlatformAdminUiBundle\Controller\Controller
diff --git a/src/bundle/Resources/public/js/scripts/admin.location.view.js b/src/bundle/Resources/public/js/scripts/admin.location.view.js
index 5df35225..eb413078 100644
--- a/src/bundle/Resources/public/js/scripts/admin.location.view.js
+++ b/src/bundle/Resources/public/js/scripts/admin.location.view.js
@@ -36,7 +36,10 @@
             const wrapper = doc.querySelector('.ez-modal-wrapper');
 
             wrapper.innerHTML = modalHtml;
-            wrapper.querySelector('.ez-btn--add-draft').addEventListener('click', addDraft, false);
+            const addDraftButton = wrapper.querySelector('.ez-btn--add-draft');
+            if (addDraftButton) {
+                addDraftButton.addEventListener('click', addDraft, false);
+            }
             [...wrapper.querySelectorAll('.ez-btn--prevented')].forEach(btn => btn.addEventListener('click', event => event.preventDefault(), false));
             $('#version-draft-conflict-modal').modal('show');
         };
diff --git a/src/bundle/Resources/public/js/scripts/button.content.edit.js b/src/bundle/Resources/public/js/scripts/button.content.edit.js
index 9fbe6e05..30496530 100644
--- a/src/bundle/Resources/public/js/scripts/button.content.edit.js
+++ b/src/bundle/Resources/public/js/scripts/button.content.edit.js
@@ -26,7 +26,10 @@
             const wrapper = doc.querySelector('.ez-modal-wrapper');
 
             wrapper.innerHTML = modalHtml;
-            wrapper.querySelector('.ez-btn--add-draft').addEventListener('click', addDraft, false);
+            const addDraftButton = wrapper.querySelector('.ez-btn--add-draft');
+            if (addDraftButton) {
+                addDraftButton.addEventListener('click', addDraft, false);
+            }
             [...wrapper.querySelectorAll('.ez-btn--prevented')].forEach(btn => btn.addEventListener('click', event => event.preventDefault(), false));
             $('#version-draft-conflict-modal').modal('show');
         };
diff --git a/src/bundle/Resources/public/js/scripts/sidebar/btn/location.edit.js b/src/bundle/Resources/public/js/scripts/sidebar/btn/location.edit.js
index ab64eca9..bf043967 100644
--- a/src/bundle/Resources/public/js/scripts/sidebar/btn/location.edit.js
+++ b/src/bundle/Resources/public/js/scripts/sidebar/btn/location.edit.js
@@ -1,8 +1,9 @@
 (function (global, doc, $) {
-    const editActions = doc.querySelector('.ez-extra-actions--edit');
+    const editActions = doc.querySelector('.ez-extra-actions--edit') || doc.querySelector('.ez-extra-actions--edit-user') ;
     const btns = [...editActions.querySelectorAll('.form-check [type="radio"]')];
     const form = editActions.querySelector('form');
-    const contentId = form.querySelector('#content_edit_content_info').value;
+    const contentIdInput = form.querySelector('#content_edit_content_info') || form.querySelector('#user_edit_content_info');
+    const contentId = contentIdInput.value;
     const checkVersionDraftLink = global.Routing.generate('ezplatform.version_draft.has_no_conflict', { contentId });
     const resetRadioButtons = () => btns.forEach(btn => btn.checked = false);
     const addDraft = () => {
@@ -14,17 +15,31 @@
         const showModal = (modalHtml) => {
             const wrapper = doc.querySelector('.ez-modal-wrapper');
             wrapper.innerHTML = modalHtml;
-            wrapper.querySelector('.ez-btn--add-draft').addEventListener('click', addDraft, false);
+            const addDraftButton = wrapper.querySelector('.ez-btn--add-draft');
+            if (addDraftButton) {
+                addDraftButton.addEventListener('click', addDraft, false);
+            }
             [...wrapper.querySelectorAll('.ez-btn--prevented')].forEach(btn => btn.addEventListener('click', event => event.preventDefault(), false));
             $('#version-draft-conflict-modal').modal('show').on('hidden.bs.modal', resetRadioButtons);
         };
 
+        const redirectToUserEdit = () => {
+            const versionNo = form.querySelector('#user_edit_version_info_version_no').value;
+            const language = btns.find(btn => btn.checked).value;
+
+            window.location.href = global.Routing.generate('ez_user_update', { contentId, versionNo, language });
+        };
+
         fetch(checkVersionDraftLink, {
             credentials: 'same-origin'
         }).then(function (response) {
             if (response.status === 409) {
                 response.text().then(showModal);
             } else if (response.status === 200) {
+                if (form.querySelector('#user_edit_version_info')) {
+                    redirectToUserEdit();
+                    return;
+                }
                 form.submit();
             }
         });
diff --git a/src/bundle/Resources/public/js/scripts/sidebar/btn/user.edit.js b/src/bundle/Resources/public/js/scripts/sidebar/btn/user.edit.js
new file mode 100644
index 00000000..fde3c126
--- /dev/null
+++ b/src/bundle/Resources/public/js/scripts/sidebar/btn/user.edit.js
@@ -0,0 +1,14 @@
+(function (global, doc) {
+    const editButton = doc.querySelector('.ez-btn--edit-user');
+    const languageRadioOption = doc.querySelector('.ez-extra-actions--edit-user.ez-extra-actions--prevent-show [type="radio"]');
+    const editActions = doc.querySelector('.ez-extra-actions--edit-user');
+
+    if (!editActions || !languageRadioOption) {
+        return;
+    }
+
+    editButton.addEventListener('click', () => {
+        languageRadioOption.checked = true;
+        languageRadioOption.dispatchEvent(new CustomEvent('change'));
+    }, false);
+})(window, document);
diff --git a/src/bundle/Resources/public/scss/_extra-actions.scss b/src/bundle/Resources/public/scss/_extra-actions.scss
index db087186..243e7553 100644
--- a/src/bundle/Resources/public/scss/_extra-actions.scss
+++ b/src/bundle/Resources/public/scss/_extra-actions.scss
@@ -54,6 +54,7 @@
         overflow: auto;
     }
 
+    &--edit-user,
     &--edit {
         #{$block}__content {
             padding: 8px;
diff --git a/src/bundle/Resources/translations/content_url.en.xliff b/src/bundle/Resources/translations/content_url.en.xliff
index c1a7523c..3cd7b345 100644
--- a/src/bundle/Resources/translations/content_url.en.xliff
+++ b/src/bundle/Resources/translations/content_url.en.xliff
@@ -56,6 +56,11 @@
         <target state="new">Checked will create the alias at the site root.</target>
         <note>key: tab.urls.add.site_root.helper.checked</note>
       </trans-unit>
+      <trans-unit id="cf65d6c865f18c51e3edcd90c6779079b994595c" resname="tab.urls.add.site_root.helper.no_parent_name">
+        <source>Unchecked will create the new alias under the parent of this location</source>
+        <target state="new">Unchecked will create the new alias under the parent of this location</target>
+        <note>key: tab.urls.add.site_root.helper.no_parent_name</note>
+      </trans-unit>
       <trans-unit id="db531fb5f993263b5ea57393101781b9d731a738" resname="tab.urls.add.site_root.helper.unchecked">
         <source>Unchecked will create the new alias under %parent_name%</source>
         <target state="new">Unchecked will create the new alias under %parent_name%</target>
diff --git a/src/bundle/Resources/translations/draft_conflict.en.xliff b/src/bundle/Resources/translations/draft_conflict.en.xliff
index 1b5ad870..c8ce37e3 100644
--- a/src/bundle/Resources/translations/draft_conflict.en.xliff
+++ b/src/bundle/Resources/translations/draft_conflict.en.xliff
@@ -11,6 +11,11 @@
         <target state="new">You can either edit any of your existing draft(s) or add a new one.</target>
         <note>key: draft.conflict.choice</note>
       </trans-unit>
+      <trans-unit id="051e6a67518db4bc613d03a2cbfc5516c539ad8f" resname="draft.conflict.choice_content_is_user">
+        <source>You can edit any of your existing draft(s)</source>
+        <target state="new">You can edit any of your existing draft(s)</target>
+        <note>key: draft.conflict.choice_content_is_user</note>
+      </trans-unit>
       <trans-unit id="57ae8e493adef8a884a3f0c5e9e4501b7f2ec395" resname="draft.conflict.header">
         <source>Draft conflict when editing</source>
         <target state="new">Draft conflict when editing</target>
diff --git a/src/bundle/Resources/translations/locationview.en.xliff b/src/bundle/Resources/translations/locationview.en.xliff
index 8a6f955a..8a41eb7e 100644
--- a/src/bundle/Resources/translations/locationview.en.xliff
+++ b/src/bundle/Resources/translations/locationview.en.xliff
@@ -456,6 +456,11 @@
         <target state="new">Close</target>
         <note>key: translation.modal_close</note>
       </trans-unit>
+      <trans-unit id="c285bc654712e44ed56cd6f18262a2d6485f4fb9" resname="user.edit.select_language">
+        <source>Select language</source>
+        <target state="new">Select language</target>
+        <note>key: user.edit.select_language</note>
+      </trans-unit>
     </body>
   </file>
 </xliff>
diff --git a/src/bundle/Resources/views/content/locationview.html.twig b/src/bundle/Resources/views/content/locationview.html.twig
index 25bde37d..63dac31a 100644
--- a/src/bundle/Resources/views/content/locationview.html.twig
+++ b/src/bundle/Resources/views/content/locationview.html.twig
@@ -3,7 +3,12 @@
 {% trans_default_domain 'locationview' %}
 {% form_theme form_location_copy '@ezdesign/parts/form/flat_widgets.html.twig' %}
 {% form_theme form_location_move '@ezdesign/parts/form/flat_widgets.html.twig' %}
-{% form_theme form_content_edit '@ezdesign/form_fields.html.twig' %}
+{% if form_content_edit is defined %}
+    {% form_theme form_content_edit '@ezdesign/form_fields.html.twig' %}
+{% endif %}
+{% if form_user_edit is defined %}
+    {% form_theme form_user_edit '@ezdesign/form_fields.html.twig' %}
+{% endif %}
 {% form_theme form_content_create '@ezdesign/form_fields.html.twig' %}
 
 {% block body_class %}ez-content-view{% endblock %}
@@ -75,7 +80,12 @@
 
                 <div class="ez-extra-actions-container">
                     {% include '@ezdesign/content/widgets/content_create.html.twig' with {'form': form_content_create} only %}
-                    {% include '@ezdesign/content/widgets/content_edit.html.twig' with {'form': form_content_edit} only %}
+                    {% if form_content_edit is defined %}
+                        {% include '@ezdesign/content/widgets/content_edit.html.twig' with {'form': form_content_edit} only %}
+                    {% endif %}
+                    {% if form_user_edit is defined %}
+                        {% include '@ezdesign/content/widgets/user_edit.html.twig' with {'form': form_user_edit} only %}
+                    {% endif %}
                 </div>
             </div>
             {%  if form_location_trash is defined %}
@@ -124,6 +134,7 @@
         '@EzPlatformAdminUiBundle/Resources/public/js/scripts/udw/locations.tab.js'
         '@EzPlatformAdminUiBundle/Resources/public/js/scripts/sidebar/extra.actions.js'
         '@EzPlatformAdminUiBundle/Resources/public/js/scripts/sidebar/btn/location.edit.js'
+        '@EzPlatformAdminUiBundle/Resources/public/js/scripts/sidebar/btn/user.edit.js'
         '@EzPlatformAdminUiBundle/Resources/public/js/scripts/sidebar/btn/location.create.js'
         '@EzPlatformAdminUiBundle/Resources/public/js/scripts/sidebar/instant.filter.js'
         '@EzPlatformAdminUiAssetsBundle/Resources/public/vendors/leaflet/dist/leaflet.js'
diff --git a/src/bundle/Resources/views/content/modal_draft_conflict.html.twig b/src/bundle/Resources/views/content/modal_draft_conflict.html.twig
index 8a20e381..74dd01ff 100644
--- a/src/bundle/Resources/views/content/modal_draft_conflict.html.twig
+++ b/src/bundle/Resources/views/content/modal_draft_conflict.html.twig
@@ -22,10 +22,15 @@
                         ) }}
                     </p>
                     <p class="ez-modal-body__main-content">
-                        {{ 'draft.conflict.choice'|trans({})|desc('You can either edit any of your existing draft(s) or add a new one.') }}
+                        {% if content_is_user %}
+                            {{ 'draft.conflict.choice_content_is_user'|trans({})|desc('You can edit any of your existing draft(s)') }}
+                        {% else %}
+                            {{ 'draft.conflict.choice'|trans({})|desc('You can either edit any of your existing draft(s) or add a new one.') }}
+                        {% endif %}
                     </p>
                 </div>
-                {% include '@ezdesign/parts/table_header.html.twig' with { headerText: null, tools: version_modal_draft_conflict.table_header_tools() } %}
+                {% set show_add_draft_button = (not content_is_user) %}
+                {% include '@ezdesign/parts/table_header.html.twig' with { headerText: null, tools: version_modal_draft_conflict.table_header_tools(show_add_draft_button) } %}
                 <div class="ez-scrollable-wrapper">
                     {{ include('@ezdesign/content/tab/versions/table.html.twig', {
                         'versions': conflicted_drafts,
@@ -33,6 +38,7 @@
                         'is_draft': true,
                         'haveToPaginate': false,
                         'is_draft_conflict': true,
+                        'content_is_user': content_is_user
                     }) }}
                 </div>
             </div>
@@ -40,11 +46,13 @@
     </div>
 </div>
 
-{% macro table_header_tools() %}
-    <button type="button" class="btn btn-primary ez-btn--add-draft"
-            title="{{ 'tab.versions.action.delete'|trans|desc('Add draft') }}">
-        <svg class="ez-icon ez-icon-create">
-            <use xlink:href="{{ asset('bundles/ezplatformadminui/img/ez-icons.svg') }}#create"></use>
-        </svg>
-    </button>
+{% macro table_header_tools(show_add_button) %}
+    {% if show_add_button %}
+        <button type="button" class="btn btn-primary ez-btn--add-draft"
+                title="{{ 'tab.versions.action.delete'|trans|desc('Add draft') }}">
+            <svg class="ez-icon ez-icon-create">
+                <use xlink:href="{{ asset('bundles/ezplatformadminui/img/ez-icons.svg') }}#create"></use>
+            </svg>
+        </button>
+    {% endif %}
 {% endmacro %}
diff --git a/src/bundle/Resources/views/content/tab/versions/tab.html.twig b/src/bundle/Resources/views/content/tab/versions/tab.html.twig
index e900d023..006e77bd 100644
--- a/src/bundle/Resources/views/content/tab/versions/tab.html.twig
+++ b/src/bundle/Resources/views/content/tab/versions/tab.html.twig
@@ -16,7 +16,8 @@
             'versions': draft_pager.currentPageResults,
             'is_draft': true,
             'form': form_version_remove_draft,
-            'haveToPaginate': draft_pager.haveToPaginate
+            'haveToPaginate': draft_pager.haveToPaginate,
+            'content_is_user': content_is_user
         }) }}
         {{ form_end(form_version_remove_draft) }}
 
@@ -63,7 +64,13 @@
         }) }}
         {% include '@ezdesign/parts/table_header.html.twig' with { headerText: 'tab.versions.archived_versions'|trans()|desc('Archived versions'), tools: tab.table_header_tools(form_version_remove_archived) } %}
         {% if archived_versions is not empty %}
-            {{ include('@ezdesign/content/tab/versions/table.html.twig', { 'versions': archived_versions, 'form': form_version_remove_archived, 'is_archived': true, 'form_archived_version_restore': form_archived_version_restore }) }}
+            {{ include('@ezdesign/content/tab/versions/table.html.twig', {
+                'versions': archived_versions,
+                'form': form_version_remove_archived,
+                'is_archived': true,
+                'form_archived_version_restore': form_archived_version_restore,
+                'content_is_user': content_is_user
+            }) }}
         {% else %}
             <p>
                 {{ 'tab.versions.no_permission'|trans()|desc('You don\'t have access to view the content item\'s versions') }}
diff --git a/src/bundle/Resources/views/content/tab/versions/table.html.twig b/src/bundle/Resources/views/content/tab/versions/table.html.twig
index ed306fe3..0d267646 100644
--- a/src/bundle/Resources/views/content/tab/versions/table.html.twig
+++ b/src/bundle/Resources/views/content/tab/versions/table.html.twig
@@ -24,6 +24,20 @@
     </thead>
     <tbody>
     {% for version in versions %}
+
+        {% set edit_url = content_is_user is defined and content_is_user ?
+            path('ez_user_update', {
+            'contentId': version.contentInfo.id,
+            'versionNo': version.versionNo,
+            'language': version.translations[0].languageCode,
+        }) : path('ez_content_draft_edit', {
+            'contentId': version.contentInfo.id,
+            'versionNo': version.versionNo,
+            'language': version.translations[0].languageCode,
+            'locationId': location.id
+        })
+        %}
+
         <tr>
             {% if form is defined %}
                 <td class="ez-checkbox-cell">{{ form_widget(form.versions[version.versionNo], {'attr': {'disabled': not version.canDelete}}) }}</td>
@@ -52,7 +66,7 @@
             {% if is_draft_conflict %}
                 <td>
                     {% set edit_draft_disabled = version.author.id != admin_ui_config.user.user.id %}
-                    <a href="{{ path('ez_content_draft_edit', { 'contentId': version.contentInfo.id, 'versionNo': version.versionNo, 'language': version.translations[0].languageCode, 'locationId': location.id }) }}"
+                    <a href="{{ edit_url }}"
                        class="btn btn-icon {% if edit_draft_disabled %}ez-btn--prevented{% endif %}"
                        title="{{ 'tab.versions.table.action.draft.edit'|trans|desc('Edit Draft') }}"
                        {% if edit_draft_disabled %}disabled{% endif %}>
@@ -62,20 +76,15 @@
                     </a>
                 </td>
             {% elseif is_draft %}
-                <td>
+                <td class="ez-table__cell ez-table__cell--has-action-btns text-right">
                     <button
-                        data-content-draft-edit-url="{{ path('ez_content_draft_edit', {
-                            'contentId': version.contentInfo.id,
-                            'versionNo': version.versionNo,
-                            'language': version.translations[0].languageCode,
-                            'locationId': location.id
-                        }) }}"
+                        data-content-draft-edit-url="{{ edit_url }}"
                         data-version-has-conflict-url="{{ path('ezplatform.version.has_no_conflict', {
                             'contentId': version.contentInfo.id,
                             'versionNo': version.versionNo,
                             'languageCode': version.translations[0].languageCode
                         }) }}"
-                        class="btn btn-icon ez-btn--content-draft-edit"
+                        class="btn btn-icon mx-2 ez-btn--content-draft-edit"
                         title="{{ 'tab.versions.table.action.draft.edit'|trans|desc('Edit Draft') }}">
                         <svg class="ez-icon ez-icon-edit">
                             <use xlink:href="{{ asset('bundles/ezplatformadminui/img/ez-icons.svg') }}#edit"></use>
@@ -84,8 +93,8 @@
                 </td>
             {% endif %}
             {% if is_archived %}
-                <td>
-                    <button class="btn btn-icon ez-btn--content-edit"
+                <td class="ez-table__cell ez-table__cell--has-action-btns text-right">
+                    <button class="btn btn-icon mx-2 ez-btn--content-edit"
                             title="{{ 'tab.versions.table.action.archived.edit'|trans|desc('Restore Archived Version') }}"
                             data-content-id="{{ version.contentInfo.id }}"
                             data-version-no="{{ version.versionNo }}"
diff --git a/src/bundle/Resources/views/content/widgets/user_edit.html.twig b/src/bundle/Resources/views/content/widgets/user_edit.html.twig
new file mode 100644
index 00000000..1d8d05e6
--- /dev/null
+++ b/src/bundle/Resources/views/content/widgets/user_edit.html.twig
@@ -0,0 +1,17 @@
+{% trans_default_domain 'locationview' %}
+
+<div class="ez-extra-actions ez-extra-actions--edit-user ez-extra-actions--hidden bg-secondary
+    {% if form.language.vars.choices|length == 1 %} ez-extra-actions--prevent-show {% endif %}"
+    data-actions="edit-user">
+    <div class="ez-extra-actions__header">{{ 'user.edit.select_language'|trans|desc('Select language') }}</div>
+    <div class="ez-extra-actions__content">
+        {{ form_start(form) }}
+        {{ form_widget(form.content_info) }}
+        {{ form_widget(form.location) }}
+        {{ form_widget(form.version_info) }}
+        {{ form_widget(form.language, { 'attr': {
+            'class': 'ez-extra-actions__form-values'
+        } }) }}
+        {{ form_end(form) }}
+    </div>
+</div>
diff --git a/src/bundle/Resources/views/dashboard/tab/my_drafts.html.twig b/src/bundle/Resources/views/dashboard/tab/my_drafts.html.twig
index 0b262691..d0ac7492 100644
--- a/src/bundle/Resources/views/dashboard/tab/my_drafts.html.twig
+++ b/src/bundle/Resources/views/dashboard/tab/my_drafts.html.twig
@@ -14,6 +14,17 @@
         </thead>
         <tbody>
         {% for row in data %}
+            {% set edit_url = content_is_user is defined and content_is_user ?
+                path('ez_user_update', {
+                'contentId': row.contentId,
+                'versionNo': row.version,
+                'language': row.language
+            }) : path('ez_content_draft_edit', {
+                'contentId': row.contentId,
+                'versionNo': row.version,
+                'language': row.language
+            })
+            %}
             <tr>
                 <td>{{ row.name }}</td>
                 <td>{{ row.type }}</td>
@@ -23,11 +34,7 @@
                 <td class="text-center">
                     <button class="btn btn-icon ez-btn--content-draft-edit"
                             title="{{ 'dashboard.table.draft.edit'|trans|desc('Edit Draft') }}"
-                            data-content-draft-edit-url="{{ path('ez_content_draft_edit', {
-                                'contentId': row.contentId,
-                                'versionNo': row.version,
-                                'language': row.language
-                            }) }}"
+                            data-content-draft-edit-url="{{ edit_url }}"
                             data-version-has-conflict-url="{{ path('ezplatform.version.has_no_conflict', {
                                 'contentId': row.contentId,
                                 'versionNo': row.version,
diff --git a/src/lib/Form/Data/Content/Draft/ContentEditData.php b/src/lib/Form/Data/Content/Draft/ContentEditData.php
index 215336de..ac88344e 100644
--- a/src/lib/Form/Data/Content/Draft/ContentEditData.php
+++ b/src/lib/Form/Data/Content/Draft/ContentEditData.php
@@ -18,27 +18,23 @@ use eZ\Publish\API\Repository\Values\Content\VersionInfo;
  */
 class ContentEditData
 {
-    /** @var Location|null */
+    /** @var \eZ\Publish\API\Repository\Values\Content\Location|null */
     protected $location;
 
-    /**
-     * @deprecated Deprecated in 1.1 and will be removed in 2.0. Please use ContentEditData::$location instead.
-     *
-     * @var ContentInfo|null
-     * */
+    /** @var \eZ\Publish\API\Repository\Values\Content\ContentInfo|null */
     protected $contentInfo;
 
-    /** @var VersionInfo|null */
+    /** @var \eZ\Publish\API\Repository\Values\Content\VersionInfo|null */
     protected $versionInfo;
 
-    /** @var Language|null */
+    /** @var \eZ\Publish\API\Repository\Values\Content\Language|null */
     protected $language;
 
     /**
-     * @param ContentInfo|null $contentInfo
-     * @param VersionInfo|null $versionInfo
-     * @param Language|null $language
-     * @param Location|null $location
+     * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo|null $contentInfo
+     * @param \eZ\Publish\API\Repository\Values\Content\VersionInfo|null $versionInfo
+     * @param \eZ\Publish\API\Repository\Values\Content\Language|null $language
+     * @param \eZ\Publish\API\Repository\Values\Content\Location|null $location
      */
     public function __construct(
         ?ContentInfo $contentInfo = null,
@@ -53,7 +49,7 @@ class ContentEditData
     }
 
     /**
-     * @return Location|null
+     * @return \eZ\Publish\API\Repository\Values\Content\Location|null
      */
     public function getLocation(): ?Location
     {
@@ -61,7 +57,9 @@ class ContentEditData
     }
 
     /**
-     * @param Location|null $location
+     * @param \eZ\Publish\API\Repository\Values\Content\Location|null $location
+     *
+     * @return self
      */
     public function setLocation(Location $location): self
     {
@@ -71,9 +69,7 @@ class ContentEditData
     }
 
     /**
-     * @deprecated Deprecated in 1.1 and will be removed in 2.0. Please use ContentEditData::getLocation instead.
-     *
-     * @return ContentInfo|null
+     * @return \eZ\Publish\API\Repository\Values\Content\ContentInfo|null
      */
     public function getContentInfo(): ?ContentInfo
     {
@@ -81,9 +77,7 @@ class ContentEditData
     }
 
     /**
-     * @deprecated Deprecated in 1.1 and will be removed in 2.0. Please use ContentEditData::setLocation instead.
-     *
-     * @param ContentInfo|null $contentInfo
+     * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo|null $contentInfo
      *
      * @return self
      */
@@ -95,7 +89,7 @@ class ContentEditData
     }
 
     /**
-     * @return VersionInfo|null
+     * @return \eZ\Publish\API\Repository\Values\Content\VersionInfo|null
      */
     public function getVersionInfo(): ?VersionInfo
     {
@@ -103,7 +97,7 @@ class ContentEditData
     }
 
     /**
-     * @param VersionInfo|null $versionInfo
+     * @param \eZ\Publish\API\Repository\Values\Content\VersionInfo|null $versionInfo
      *
      * @return self
      */
@@ -115,7 +109,7 @@ class ContentEditData
     }
 
     /**
-     * @return Language|null
+     * @return \eZ\Publish\API\Repository\Values\Content\Language|null
      */
     public function getLanguage(): ?Language
     {
@@ -123,7 +117,7 @@ class ContentEditData
     }
 
     /**
-     * @param Language|null $language
+     * @param \eZ\Publish\API\Repository\Values\Content\Language|null $language
      *
      * @return self
      */
diff --git a/src/lib/Form/Data/User/UserEditData.php b/src/lib/Form/Data/User/UserEditData.php
new file mode 100644
index 00000000..f1f7873c
--- /dev/null
+++ b/src/lib/Form/Data/User/UserEditData.php
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * @copyright Copyright (C) eZ Systems AS. All rights reserved.
+ * @license For full copyright and license information view LICENSE file distributed with this source code.
+ */
+declare(strict_types=1);
+
+namespace EzSystems\EzPlatformAdminUi\Form\Data\User;
+
+use eZ\Publish\API\Repository\Values\Content\ContentInfo;
+use eZ\Publish\API\Repository\Values\Content\Language;
+use eZ\Publish\API\Repository\Values\Content\Location;
+use eZ\Publish\API\Repository\Values\Content\VersionInfo;
+
+class UserEditData
+{
+    /** @var \eZ\Publish\API\Repository\Values\Content\ContentInfo|null */
+    private $contentInfo;
+
+    /** @var \eZ\Publish\API\Repository\Values\Content\VersionInfo|null */
+    private $versionInfo;
+
+    /** @var \eZ\Publish\API\Repository\Values\Content\Language|null */
+    private $language;
+
+    /** @var \eZ\Publish\API\Repository\Values\Content\Location|null */
+    private $location;
+
+    public function __construct(
+        ?ContentInfo $contentInfo = null,
+        ?VersionInfo $versionInfo = null,
+        ?Language $language = null,
+        ?Location $location = null
+    ) {
+        $this->contentInfo = $contentInfo;
+        $this->versionInfo = $versionInfo;
+        $this->language = $language;
+        $this->location = $location;
+    }
+
+    /**
+     * @return \eZ\Publish\API\Repository\Values\Content\ContentInfo|null
+     */
+    public function getContentInfo(): ?ContentInfo
+    {
+        return $this->contentInfo;
+    }
+
+    /**
+     * @param \eZ\Publish\API\Repository\Values\Content\ContentInfo|null $contentInfo
+     */
+    public function setContentInfo(?ContentInfo $contentInfo): void
+    {
+        $this->contentInfo = $contentInfo;
+    }
+
+    /**
+     * @return \eZ\Publish\API\Repository\Values\Content\VersionInfo|null
+     */
+    public function getVersionInfo(): ?VersionInfo
+    {
+        return $this->versionInfo;
+    }
+
+    /**
+     * @param \eZ\Publish\API\Repository\Values\Content\VersionInfo|null $versionInfo
+     */
+    public function setVersionInfo(?VersionInfo $versionInfo): void
+    {
+        $this->versionInfo = $versionInfo;
+    }
+
+    /**
+     * @return \eZ\Publish\API\Repository\Values\Content\Language|null
+     */
+    public function getLanguage(): ?Language
+    {
+        return $this->language;
+    }
+
+    /**
+     * @param \eZ\Publish\API\Repository\Values\Content\Language|null $language
+     */
+    public function setLanguage(?Language $language): void
+    {
+        $this->language = $language;
+    }
+
+    /**
+     * @return \eZ\Publish\API\Repository\Values\Content\Location|null
+     */
+    public function getLocation(): ?Location
+    {
+        return $this->location;
+    }
+
+    /**
+     * @param \eZ\Publish\API\Repository\Values\Content\Location|null $location
+     */
+    public function setLocation(?Location $location): void
+    {
+        $this->location = $location;
+    }
+}
diff --git a/src/lib/Form/Factory/FormFactory.php b/src/lib/Form/Factory/FormFactory.php
index 9815031c..a6f3d7dd 100644
--- a/src/lib/Form/Factory/FormFactory.php
+++ b/src/lib/Form/Factory/FormFactory.php
@@ -63,6 +63,8 @@ use EzSystems\EzPlatformAdminUi\Form\Data\Section\SectionUpdateData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Trash\TrashEmptyData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Trash\TrashItemDeleteData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Trash\TrashItemRestoreData;
+use EzSystems\EzPlatformAdminUi\Form\Data\User\UserEditData;
+use EzSystems\EzPlatformAdminUi\Form\Data\User\Setting\UserSettingUpdateData;
 use EzSystems\EzPlatformAdminUi\Form\Data\User\UserPasswordChangeData;
 use EzSystems\EzPlatformAdminUi\Form\Data\User\UserDeleteData;
 use EzSystems\EzPlatformAdminUi\Form\Data\User\UserPasswordForgotData;
@@ -99,6 +101,8 @@ use EzSystems\EzPlatformAdminUi\Form\Type\ObjectState\ObjectStateGroupsDeleteTyp
 use EzSystems\EzPlatformAdminUi\Form\Type\ObjectState\ObjectStatesDeleteType;
 use EzSystems\EzPlatformAdminUi\Form\Type\Policy\PolicyCreateWithLimitationType;
 use EzSystems\EzPlatformAdminUi\Form\Type\Trash\TrashItemDeleteType;
+use EzSystems\EzPlatformAdminUi\Form\Type\User\UserEditType;
+use EzSystems\EzPlatformAdminUi\Form\Type\User\Setting\UserSettingUpdateType;
 use EzSystems\EzPlatformAdminUi\Form\Type\User\UserPasswordChangeType;
 use EzSystems\EzPlatformAdminUi\Form\Type\User\UserDeleteType;
 use EzSystems\EzPlatformAdminUi\Form\Type\ObjectState\ContentObjectStateUpdateType;
@@ -1213,4 +1217,23 @@ class FormFactory
 
         return $this->formFactory->createNamed($name, BookmarkRemoveType::class, $data);
     }
+
+    /**
+     * @param \EzSystems\EzPlatformAdminUi\Form\Data\User\UserEditData|null $data
+     * @param string|null $name
+     *
+     * @return \Symfony\Component\Form\FormInterface
+     */
+    public function editUser(
+        UserEditData $data = null,
+        ?string $name = null
+    ): FormInterface {
+        $name = $name ?: StringUtil::fqcnToBlockPrefix(UserEditType::class);
+        $data = $data ?? new UserEditData();
+        $options = null !== $data->getVersionInfo()
+            ? ['language_codes' => $data->getVersionInfo()->languageCodes]
+            : [];
+
+        return $this->formFactory->createNamed($name, UserEditType::class, $data, $options);
+    }
 }
diff --git a/src/lib/Form/Type/User/UserEditType.php b/src/lib/Form/Type/User/UserEditType.php
new file mode 100644
index 00000000..c76c9f46
--- /dev/null
+++ b/src/lib/Form/Type/User/UserEditType.php
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * @copyright Copyright (C) eZ Systems AS. All rights reserved.
+ * @license For full copyright and license information view LICENSE file distributed with this source code.
+ */
+declare(strict_types=1);
+
+namespace EzSystems\EzPlatformAdminUi\Form\Type\User;
+
+use eZ\Publish\API\Repository\LanguageService;
+use EzSystems\EzPlatformAdminUi\Form\Data\User\UserEditData;
+use EzSystems\EzPlatformAdminUi\Form\Type\Content\ContentInfoType;
+use EzSystems\EzPlatformAdminUi\Form\Type\Content\LocationType;
+use EzSystems\EzPlatformAdminUi\Form\Type\Content\VersionInfoType;
+use EzSystems\EzPlatformAdminUi\Form\Type\Language\LanguageChoiceType;
+use Symfony\Component\Form\AbstractType;
+use Symfony\Component\Form\ChoiceList\Loader\CallbackChoiceLoader;
+use Symfony\Component\Form\Extension\Core\Type\SubmitType;
+use Symfony\Component\Form\FormBuilderInterface;
+use Symfony\Component\OptionsResolver\OptionsResolver;
+
+class UserEditType extends AbstractType
+{
+    /** @var LanguageService */
+    protected $languageService;
+
+    /**
+     * @param LanguageService $languageService
+     */
+    public function __construct(LanguageService $languageService)
+    {
+        $this->languageService = $languageService;
+    }
+
+    public function buildForm(FormBuilderInterface $builder, array $options)
+    {
+        $builder
+            ->add(
+                'content_info',
+                ContentInfoType::class,
+                ['label' => false, 'attr' => ['hidden' => true]]
+            )
+            ->add(
+                'location',
+                LocationType::class,
+                ['label' => false, 'attr' => ['hidden' => true]]
+            )
+            ->add(
+                'version_info',
+                VersionInfoType::class,
+                ['label' => false, 'attr' => ['hidden' => true]]
+            )
+            ->add(
+                'language',
+                LanguageChoiceType::class,
+                $this->getLanguageOptions($options)
+            )
+            ->add(
+                'edit',
+                SubmitType::class,
+                ['attr' => ['hidden' => true]]
+            );
+    }
+
+    public function configureOptions(OptionsResolver $resolver)
+    {
+        $resolver
+            ->setDefaults([
+                'data_class' => UserEditData::class,
+                'translation_domain' => 'forms',
+                'language_codes' => false,
+            ])
+            ->setAllowedTypes('language_codes', ['bool', 'array']);
+    }
+
+    /**
+     * @param array $options
+     *
+     * @return array
+     */
+    private function getLanguageOptions(array $options): array
+    {
+        $languageOptions = [
+            'label' => false,
+            'multiple' => false,
+            'expanded' => true,
+        ];
+
+        if (is_array($options['language_codes'])) {
+            $languageOptions['choice_loader'] = new CallbackChoiceLoader(function () use ($options) {
+                return array_map([$this->languageService, 'loadLanguage'], $options['language_codes']);
+            });
+        }
+
+        return $languageOptions;
+    }
+}
diff --git a/src/lib/Menu/ContentRightSidebarBuilder.php b/src/lib/Menu/ContentRightSidebarBuilder.php
index 4da82f5a..e36591cd 100644
--- a/src/lib/Menu/ContentRightSidebarBuilder.php
+++ b/src/lib/Menu/ContentRightSidebarBuilder.php
@@ -167,6 +167,8 @@ class ContentRightSidebarBuilder extends AbstractBuilder implements TranslationC
             $this->searchService
         ))->and((new IsRoot())->not())->isSatisfiedBy($location);
 
+        $contentIsUser = (new ContentIsUser($this->userService))->isSatisfiedBy($content);
+
         $menu->setChildren([
             self::ITEM__CREATE => $this->createMenuItem(
                 self::ITEM__CREATE,
@@ -177,16 +179,12 @@ class ContentRightSidebarBuilder extends AbstractBuilder implements TranslationC
                         : array_merge($createAttributes, ['disabled' => 'disabled']),
                 ]
             ),
-            self::ITEM__EDIT => $this->createMenuItem(
-                self::ITEM__EDIT,
-                [
-                    'extras' => ['icon' => 'edit'],
-                    'attributes' => $canEdit
-                        ? $editAttributes
-                        : array_merge($editAttributes, ['disabled' => 'disabled']),
-                ]
-            ),
-            self::ITEM__MOVE => $this->createMenuItem(
+        ]);
+
+        $this->addEditMenuItem($menu, $contentIsUser, $canEdit);
+
+        $menu->addChild(
+            $this->createMenuItem(
                 self::ITEM__MOVE,
                 [
                     'extras' => ['icon' => 'move'],
@@ -198,8 +196,11 @@ class ContentRightSidebarBuilder extends AbstractBuilder implements TranslationC
                         ),
                     ],
                 ]
-            ),
-            self::ITEM__COPY => $this->createMenuItem(
+            )
+        );
+
+        $menu->addChild(
+            $this->createMenuItem(
                 self::ITEM__COPY,
                 [
                     'extras' => ['icon' => 'copy'],
@@ -211,8 +212,11 @@ class ContentRightSidebarBuilder extends AbstractBuilder implements TranslationC
                         ),
                     ],
                 ]
-            ),
-            self::ITEM__COPY_SUBTREE => $this->createMenuItem(
+            )
+        );
+
+        $menu->addChild(
+            $this->createMenuItem(
                 self::ITEM__COPY_SUBTREE,
                 [
                     'extras' => ['icon' => 'copy-subtree'],
@@ -220,10 +224,10 @@ class ContentRightSidebarBuilder extends AbstractBuilder implements TranslationC
                         ? $copySubtreeAttributes
                         : array_merge($copySubtreeAttributes, ['disabled' => 'disabled']),
                 ]
-            ),
-        ]);
+            )
+        );
 
-        if ((new ContentIsUser($this->userService))->isSatisfiedBy($content)) {
+        if ($contentIsUser && $canDelete) {
             $menu->addChild(
                 $this->createMenuItem(
                     self::ITEM__DELETE,
@@ -272,4 +276,47 @@ class ContentRightSidebarBuilder extends AbstractBuilder implements TranslationC
             (new Message(self::ITEM__DELETE, 'menu'))->setDesc('Delete'),
         ];
     }
+
+    /**
+     * @param \Knp\Menu\ItemInterface $menu
+     * @param bool $contentIsUser
+     * @param bool $canEdit
+     */
+    private function addEditMenuItem(ItemInterface $menu, bool $contentIsUser, bool $canEdit): void
+    {
+        $editAttributes = [
+            'class' => 'ez-btn--extra-actions ez-btn--edit',
+            'data-actions' => 'edit',
+        ];
+        $editUserAttributes = [
+            'class' => 'ez-btn--extra-actions ez-btn--edit-user',
+            'data-actions' => 'edit-user',
+        ];
+
+        if ($contentIsUser) {
+            $menu->addChild(
+                $this->createMenuItem(
+                    self::ITEM__EDIT,
+                    [
+                        'extras' => ['icon' => 'edit'],
+                        'attributes' => $canEdit
+                            ? $editUserAttributes
+                            : array_merge($editUserAttributes, ['disabled' => 'disabled']),
+                    ]
+                )
+            );
+        } else {
+            $menu->addChild(
+                $this->createMenuItem(
+                    self::ITEM__EDIT,
+                    [
+                        'extras' => ['icon' => 'edit'],
+                        'attributes' => $canEdit
+                            ? $editAttributes
+                            : array_merge($editAttributes, ['disabled' => 'disabled']),
+                    ]
+                )
+            );
+        }
+    }
 }
diff --git a/src/lib/Tab/Dashboard/PagerContentToDataMapper.php b/src/lib/Tab/Dashboard/PagerContentToDataMapper.php
index ffc8a8b2..1ada6d37 100644
--- a/src/lib/Tab/Dashboard/PagerContentToDataMapper.php
+++ b/src/lib/Tab/Dashboard/PagerContentToDataMapper.php
@@ -11,6 +11,7 @@ namespace EzSystems\EzPlatformAdminUi\Tab\Dashboard;
 use eZ\Publish\API\Repository\ContentService;
 use eZ\Publish\API\Repository\ContentTypeService;
 use eZ\Publish\API\Repository\UserService;
+use EzSystems\EzPlatformAdminUi\Specification\ContentIsUser;
 use EzSystems\EzPlatformAdminUi\Specification\UserExists;
 use Pagerfanta\Pagerfanta;
 
@@ -64,6 +65,7 @@ class PagerContentToDataMapper
                 'type' => $this->contentTypeService->loadContentType($contentInfo->contentTypeId)->getName(),
                 'modified' => $content->versionInfo->modificationDate,
                 'initialLanguageCode' => $content->versionInfo->initialLanguageCode,
+                'content_is_user' => (new ContentIsUser($this->userService))->isSatisfiedBy($content),
             ];
         }
 
diff --git a/src/lib/Tab/LocationView/VersionsTab.php b/src/lib/Tab/LocationView/VersionsTab.php
index 5b464313..3c051c4f 100644
--- a/src/lib/Tab/LocationView/VersionsTab.php
+++ b/src/lib/Tab/LocationView/VersionsTab.php
@@ -9,10 +9,12 @@ declare(strict_types=1);
 namespace EzSystems\EzPlatformAdminUi\Tab\LocationView;
 
 use eZ\Publish\API\Repository\PermissionResolver;
+use eZ\Publish\API\Repository\UserService;
 use eZ\Publish\API\Repository\Values\Content\Location;
 use EzSystems\EzPlatformAdminUi\Form\Data\Content\Draft\ContentEditData;
 use EzSystems\EzPlatformAdminUi\Form\Data\Version\VersionRemoveData;
 use EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory;
+use EzSystems\EzPlatformAdminUi\Specification\ContentIsUser;
 use EzSystems\EzPlatformAdminUi\Tab\AbstractTab;
 use EzSystems\EzPlatformAdminUi\Tab\ConditionalTabInterface;
 use EzSystems\EzPlatformAdminUi\Tab\OrderedTabInterface;
@@ -42,6 +44,9 @@ class VersionsTab extends AbstractTab implements OrderedTabInterface, Conditiona
     /** @var \eZ\Publish\API\Repository\PermissionResolver */
     protected $permissionResolver;
 
+    /** @var \eZ\Publish\API\Repository\UserService */
+    private $userService;
+
     /**
      * @param \Twig\Environment $twig
      * @param \Symfony\Component\Translation\TranslatorInterface $translator
@@ -49,6 +54,7 @@ class VersionsTab extends AbstractTab implements OrderedTabInterface, Conditiona
      * @param \EzSystems\EzPlatformAdminUi\Form\Factory\FormFactory $formFactory
      * @param \Symfony\Component\Routing\Generator\UrlGeneratorInterface $urlGenerator
      * @param \eZ\Publish\API\Repository\PermissionResolver $permissionResolver
+     * @param \eZ\Publish\API\Repository\UserService $userService
      */
     public function __construct(
         Environment $twig,
@@ -56,7 +62,8 @@ class VersionsTab extends AbstractTab implements OrderedTabInterface, Conditiona
         DatasetFactory $datasetFactory,
         FormFactory $formFactory,
         UrlGeneratorInterface $urlGenerator,
-        PermissionResolver $permissionResolver
+        PermissionResolver $permissionResolver,
+        UserService $userService
     ) {
         parent::__construct($twig, $translator);
 
@@ -64,6 +71,7 @@ class VersionsTab extends AbstractTab implements OrderedTabInterface, Conditiona
         $this->formFactory = $formFactory;
         $this->urlGenerator = $urlGenerator;
         $this->permissionResolver = $permissionResolver;
+        $this->userService = $userService;
     }
 
     /**
@@ -164,6 +172,7 @@ class VersionsTab extends AbstractTab implements OrderedTabInterface, Conditiona
             'form_archived_version_restore' => $archivedVersionRestoreForm->createView(),
             'draft_pager' => $draftPagerfanta,
             'draft_pagination_params' => $draftPaginationParams,
+            'content_is_user' => (new ContentIsUser($this->userService))->isSatisfiedBy($content),
         ];
 
         return $this->twig->render(
